using System;

namespace SharpMud.DynamicTyping
{
	/// <summary>
	/// ITypeLocation defines the fundamental behavior that a dynamic type loading mechanism
	/// should adhere to.
	/// </summary>
	public interface ITypeLocation
	{
		/// <summary>
		/// Get the assembly that the targeted type is in
		/// </summary>
		System.Reflection.Assembly	AcquireAssembly();
		/// <summary>
		/// Get the targeted type
		/// </summary>
		System.Type					AcquireType();

		/// <summary>
		/// The full name of the targeted System.Type
		/// </summary>
		string						FullTypeName {get;}

		/// <summary>
		/// Use reflection to create a default instance of the targeted type
		/// </summary>
		/// <returns></returns>
		object						AcquireTypeInstance();
	}
}
